package com.yexs;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

/**
 * Swagger的相关api注解解释：https://segmentfault.com/a/1190000012320597
 *
 * @Description: 在Application.java同级创建Swagger2的配置类Swagger2
 * 1、“@Configuration:” 此注解是告诉 Spring Boot 这是一个配置类，需要在项目启动时加载该类
 * 2、”@EnableSwagger2:“ Swagger2 是通过此注解来启动的
 * 3、通过 api方法创建 Docket 对象，其中主要注意 basePackage配置以及私有方法 apiInfo方法创建的基本信息
 * 通过指定扫描包来配置，以上配置 Swagger 会扫描整个项目工程
 * @Author: yexs
 * @CreateDate: 2018/5/29 11:25
 * @Version: 1.0
 */
//@Configuration
//@EnableSwagger2//我用的包是2.4的，如果是2.7的，这个注解好像没有（可能Swagger的高版本的使用方式不一样）
public class Swagger2 {
    //    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //为当前包路径
                .apis(RequestHandlerSelectors.basePackage("com.yexs.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                //页面标题
                .title("Spring Boot中使用Swagger2构建RESTful APIs")
                .description("更多Spring Boot相关文章请关注：http://easonjim.com/")
                //创建人
                .contact(new Contact("Yeshengsheng", "http://www.baidu.com", "1105323793@qq.com"))
                //版本号
                .version("1.0")
                .build();
    }

}
